package com.lovo.project.service;

import com.lovo.project.model.PermissionDO;
import com.lovo.project.model.UserDO;

import java.util.List;

/**
 * @title 用户业务层接口
 * @author: luo
 * @date: 2020/11/3 9:58
 */
public interface UserService {

    /**
     * 注册用户
     *
     * 注册用户时，如果影响数据库条数 <=0 ,则抛出注册异常
     *
     * @param userDO 用户信息
     */
    void register(UserDO userDO);

    /**
     * 登录
     *
     * 用户登录，如果账号密码错误，则抛出登录异常
     *
     * @param userName 登录用户名
     * @param password  登录用户密码
     * @return 登录成功返回登录用户传输对象
     */
    UserDO login(String userName,String password);



    /**
     * 根据用户编号删除用户
     *
     * 如果影响数据库行数<=0,则抛出删除用户异常
     * 并且要判断不能删除自己！！
     *
     * @param userId 需要删除的用户编号
     */
    void deleteByUserId(Integer userId);

    /**
     * 根据用户编号查询用户信息
     *
     *  如果返回的集合大小<=0.抛出查询用户信息异常
     *
     *  没有抛出异常
     *
     * @param userId 用户编号
     * @return 用户信息描述
     */
    UserDO findByUserId(Integer userId);

    /**
     * 根据动态信息获得用户集合
     *
     *
     * @param type 搜索选项
     * @param info 搜索信息
     * @return 携带用户细节的用户集合
     */
    List<UserDO> listByInfo(String type, String info);

    /**
     * 根据用户编号修改用户信息
     *
     * 如果影响数据库行数<=0，则抛出修改用户信息异常。
     *
     * @param userId 用户编号
     * @param userDO 要修改的用户信息
     */
    void updateUser(Integer userId,UserDO userDO);

    /**
     * 按用户编号查询权限
     * @param userId 用户编号
     * @return 权限结合
     */
    List<PermissionDO> findPermissionByUserId(Integer userId);


}
